 
#include <iostream>
#include <functional>

#include <boost/thread/thread.hpp>

#include <tenacitas_log/logger.h>
#include <tenacitas_log/file_printer.h>
#include <tenacitas_log/text_file_printer.h>
#include <tenacitas_log/level.h>


namespace tenacitas {
    namespace log {
        namespace test1 {

            typedef default_change_file_policy change_file_policy;

            typedef file_printer_t<change_file_policy,
                                   txt_file_mode> printer; 

            typedef logger_t<printer> logger;

            void wcnl( const level & p_level,
                       logger & p_log,
                       const char * p_func,
                       const char * p_file,		 
                       int64_t p_line );

            void f0( );
      
            void f1( );

            void f2( );
      
            void f3( );
      
            void f4( );
      
            void f5( );

            void f6( );
      
            void f7( );

            void f8( );

            // void f9( ); // must generate compiler error
            
            // void f10( ); // must generate compiler error
            
            // void f11( ); // must generate compiler error
            
            void f12( );
            
            void f13( logger && p_log );
            
            void f14( logger & p_log );
            
            // void f15( ); // must generate compiler error
            
            // void f16( ); // must generate compiler error
      
            void run( int argc, char ** argv );
        }
    }
}
